home *** CD-ROM | disk | FTP | other *** search
- ============================================
- = Informations on the Player Module Code =
- ============================================
-
-
- The Player Routine:
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
-
- A 50 Hz counter is the basic beat of Coconizer. Effects 00-06 are performed
- when the speed counter is higher zero. When it is zero then a possible note
- entry is interpreted, together with the note's linked command (07-0F, like
- Set Volume, or the effect flag setter commands).
- Compared to the old Coco player routine(s) the new play quality has improved
- a lot. The filler code now stops exactly at the end of a sample, former len-
- exceeding garbage bytes are not output anymore. Due to the way Amiga players
- work the Coco player now also plays instrument entries with no given note,
- this just repeats the last legal note with the given sample (and effect).
-
-
- View of a Sample:
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
-
- SampleStart SampleEnd
- | |
- [============X===================X====]
- | |
- | |
- LoopStart LoopEnd
- (Repeat_At) (Repeat_At+Rep_Len)
-
-
-
- Head Workspace during Filling:
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
-
- V*32 !00 : Current Position (fixp) subtracted from Endaddress; 0=Silent
- o !04 : Pitch of Tone, 16bit fixpointed
- i !08 : End Address of Sample, either SampleEnd or LoopEnd
- c !12 : Repeat_At Startvalue (fixp), is then moved in <Pos>; or 0=Off
- e !16 : Volume of currently played Sample
- !20 : Last Startposition (for new Tone without specified Sample)
-
- ?24 : Current Info Byte
- ?25 : Current Effect Byte
- ?26 : Status of Voice. 0=Music may play, 1=Music off until FX is over,
- ?27 : Last legal tone (ie 02=C#-3) 2=Music off constantly
-
- ?28 : Value for Auto Volume up
- ?29 : Value for Auto Volume down
- ?30 : Value for Auto Pitch up
- ?31 : Value for Auto Pitch down
-
-
- What's found in the Samplebay:
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
-
- In the Samplefile on disc:
-
- S*32 !00 : Sample Address, Offset from Start of Track
- a !04 : Length in Bytes
- m !08 : Volume
- p !12 : Repeat At Offset
- l !16 : Repeat Length in Bytes
- e !20 : Name (10 chars) plus newline
-
-
- And this is written into the samplebay at initialising:
-
- S*32 !00 : StartPos
- !04 : Endaddress of Sample
- !08 : Repeat Position; or 0=Off
- !12 : Volume
-
-
- with Repeat off Repeat on
- ¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯
- StartPos = Length <<16 (RepAt+RepLen) <<16
- Address = SampleStart+Length SampleStart+RepAt+RepLen
- Repeat = 0 (so Pos is always resetted) RepLen <<16
- Pitch = 16 bit fixpoint value
-
-
-
- ==============================
- = Information about Timing =
- ==============================
-
- The filler code has been written with great care and optimisation in mind.
- It does use different algorithms when an enabled cache is detected, in order
- to use the fastest method on both ARM2 (enrolled) and ARM3 (partly looped).
-
- Timings have been calculated by comparing the system sound (1 voice, wave
- beep) with a playing Coconizer soundtrack. The results depend on several
- factors: Cache on or off; the speed of the main memory (DMA and interrupts
- are also faster then); the used video mode; and a quite small factor is the
- soundtrack itself (playing faster or slower). All this mean it can vary by
- several percents.
-
- Approximate processor times taken by the player in mode 13:
-
- 12 MHz RAMs 12 MHz RAMs 8 MHz RAMs
- Cache on Cache off ARM2
- ¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯
- 4 Voices : 9% 14% 22%
- 8 Voices : 16% 31% 55%
-
-
- Text edited by Epics.